iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
自我挑戰組

Java 基本觀念與練習系列 第 7

使用 package 來管理類別吧!

  • 分享至 

  • xImage
  •  

昨天我們雖然各別把 .java 跟 .class 分類到不同的資料夾,
但長久下來還是不夠的,我們還是需要把類別來做分類,讓程式碼更好管理~

在 Java 語法中有個 package 關鍵字,可以幫助我們把類別做分類管理哦!

我們來把昨天的兩個檔案加上 package !

package cc.oyang.util;

public class Utils {

	public static void printABC(){
		System.out.println("print ABC");
	}
	
}
package cc.oyang;

public class MyHelloWorld {

	public static void main(String[] args) throws Exception {
		System.out.println("My First Hello World !");
		Utils.printABC();
	}

}

設定 package 的同時也要把 .java 檔案放到相同階層的資料夾哦!如下圖~
https://ithelp.ithome.com.tw/upload/images/20210907/20106215mM6PYXXUKm.png

那下一步就要再編譯我們的 java 原始檔:
https://ithelp.ithome.com.tw/upload/images/20210908/20106215ZDlq3c5Zyc.png

編譯器卻不知道 Utils 物件從哪裡來,這是為什麼呢?
當我們在程式碼裡面使用某個類別時,如果在相同套件中,只需要使用 class 定義的類別名稱就可以使用了,
但如果是在不同套件,就必須要使用 完全吻合名稱 ,這又是什麼呀?

完全吻合名稱(Fully qualified name) : package + class

也就是說~我們的 MyHelloWorld.java 要改成下方:

package cc.oyang;

public class MyHelloWorld {

	public static void main(String[] args) throws Exception {
		System.out.println("My First Hello World !");
		cc.oyang.util.Utils.printABC();
	}

}

再來編譯一次!
javac -d classes src/cc/oyang/MyHelloWorld.java

https://ithelp.ithome.com.tw/upload/images/20210908/20106215ai23bBI8zv.png

咦~~~又失敗了,為什麼呢?
原來是我們沒有設定 -sourcepath 給 javac,javac 找不到 MyHelloWorld.java 使用到的額外類別的原始檔 Utils.java
javac -sourcepath src -d classes src/cc/oyang/MyHelloWorld.java
https://ithelp.ithome.com.tw/upload/images/20210908/20106215KiAVHIyeRL.png

編譯時如果有指定 -d 把 .class 放到到某個目錄,結果會在該資料夾下自動建立出對應的套件階層的資料夾哦!

最後一點!
如果每次都要用 完全吻合名稱 ,加上套件名稱又很長的話就是件麻煩事情了!
所以我們還有一個方便的東西叫做 import

package cc.oyang;

import cc.oyang.util.Utils;

public class MyHelloWorld {

	public static void main(String[] args) throws Exception {
		System.out.println("My First Hello World !");
		Utils.printABC();
	}

}

一樣可以編譯跟執行成功喔!

這邊要執行的話,不能只用類別名稱哦,要使用完全吻合名稱!
https://ithelp.ithome.com.tw/upload/images/20210908/201062155AIygW0Xn7.png


上一篇
SOURCEPATH 能幫助我們什麼呢?
下一篇
Java 物件!物件!物件!
系列文
Java 基本觀念與練習8
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言